package com.kang.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.kang.pojo.ReturnRequestItem;
import com.vonechina.entity.page.ReturnAgentPage;
import com.vonechina.entity.page.ReturnRequestItemPage;

/**
 * 退货申请物品信息持久层
 * 
 * @author zs614
 *
 */
public interface ReturnRequestItemMapper {
	/**
	 * 删除退货申请下所有物品信息
	 * 
	 * @param returnRequestID
	 *            退货申请ID
	 * @return
	 */
	public int deleteByRequestID(Integer returnRequestID);

	/**
	 * 新增退货申请物品信息
	 * 
	 * @param list
	 *            退货申请物品信息实体类
	 * @return
	 */
	public int insertSelective(ReturnRequestItem list);

	/**
	 * 通过主键查询退货申请物品信息
	 * 
	 * @param id
	 *            退货申请物品信息ID
	 * @return
	 */
	public ReturnRequestItem selectByPrimaryKey(Integer id);

	/**
	 * 更新退货申请物品信息
	 * 
	 * @param record
	 *            退货申请物品信息
	 * @return
	 */
	public int updateByPrimaryKeySelective(ReturnRequestItem record);

	/**
	 * 删除退货申请不在来源内的物品信息
	 * 
	 * @param returnRequestID
	 *            退货申请
	 * @param ids
	 *            物品来源ID数组
	 * @return
	 */
	public Integer deleteNotInItem(@Param("returnRequestID") Integer returnRequestID, @Param("ids") Integer[] ids);

	/**
	 * 根据退货申请与物品来源查询物品信息
	 * 
	 * @param returnRequestID
	 *            退货申请ID
	 * @param sourceID
	 *            物品来源ID数组
	 * @return
	 */
	public ReturnRequestItem selectItem(@Param("returnRequestID") Integer returnRequestID,
			@Param("sourceID") Integer sourceID);

	/**
	 * 查询退货申请下所有物品信息
	 * 
	 * @param returnRequestID
	 *            退货申请ID
	 * @return
	 */
	public List<ReturnRequestItem> listByReturnRequestID(Integer returnRequestID);

	/**
	 * 分页查询退货申请物品信息
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<ReturnRequestItem> listReturnRequestItem(ReturnAgentPage page);

	/**
	 * 查询退货申请物品信息数量
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public Integer countReturnRequestItem(ReturnAgentPage page);

	/**
	 * 查询可用退货申请物品信息
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<ReturnRequestItem> listNotInItem(ReturnRequestItemPage page);

	/**
	 * 查询可用退货申请物品信息数量
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public Integer countNotInItem(ReturnRequestItemPage page);

	/**
	 * 更新退货申请物品信息状态
	 * 
	 * @param id
	 *            退货申请物品信息ID
	 * @param status
	 *            状态
	 * @return
	 */
	public Integer updateStatus(@Param("id") Integer id, @Param("status") Integer status);

}